$.jstree.defaults.props = [];

$.jstree.plugins.props = function (options, parent) {

    this.init = function (el, options) {
        parent.init.call(this, el, options);
    };
    this.refresh = function (skip_loading, forget_state) {
        parent.refresh.call(this, skip_loading, forget_state);
    };

    this.bind = function () {
        this.element
            .on('model.jstree', $.proxy(function (e, data) {
                debugger
                var m = this._model.data,
                    dpc = data.nodes,
                    t = this.settings.props;
                for(i = 0, j = dpc.length; i < j; i++) {
                    for(k in t){
                        if(m[dpc[i]].original && m[dpc[i]].original[t[k]] ) {
                            m[dpc[i]][t[k]] = m[dpc[i]].original[t[k]];
                        }
                    }
                }
            }, this));
        parent.bind.call(this);
    };
};
// include the props plugin by default
// $.jstree.defaults.plugins.push("props");